package com.bf.xpdd.persistent.iface;

import java.sql.SQLException;
import java.util.List;

import com.bf.xpdd.domain.ActivityRecordBean;
import com.bf.xpdd.domain.AnalysisDealByDay;
import com.bf.xpdd.domain.AnalysisDealByItem;
import com.bf.xpdd.domain.SiteSeller;

/**
 * 商品成交DAO接口
 * 
 * @author linmu
 * 
 */
public interface DaoActivityRecord
{
	/**
	 * 向数据库中增加一条成交记录
	 * 
	 * @param actRecord
	 */
	void addActivityRecord(ActivityRecordBean actRecord);

	/**
	 * 根据成交记录Id查询记录信息
	 * 
	 * @param id
	 * @return
	 */
	ActivityRecordBean queryActRecordById(long id);

	/**
	 * 根据商品Id查询商品的所有成交记录
	 * 
	 * @param itemId
	 * @return
	 */
	List<ActivityRecordBean> queryActRecordByItemId(long itemId);

	/**
	 * 根据活动Id查询活动的所有成交记录
	 * num = -1表示所有记录
	 * @param actId
	 * @return
	 */
	List<ActivityRecordBean> queryActRecordByActId(long actId, int num);

	/**
	 * 根据成交记录Id删除成交记录
	 * 
	 * @param id
	 */
	void delActRecordById(long id);

	/**
	 * 根据商品Id删除该商品的所有成交记录
	 * 
	 * @param itemId
	 */
	void delActRecordByItemId(long itemId);

	/**
	 * 根据活动Id删除活动的所有成交记录
	 * 
	 * @param actId
	 */
	void delActRecordByActId(long actId);

	/**
	 * 商品出现新的最低价，根据商品id修改商品成交纪录的最低价
	 * 
	 * @param id
	 * @param itemId
	 */
	void modifyActRecordToperByItemId(long toperId, long itemId);

	/**
	 * 根据商品id和买家nick查询成交记录id
	 * @param itemId
	 * @param nick
	 * @return
	 */
	long queryActRecordByItemIdAndNick(long itemId, String nick) throws SQLException;

	/**
	 * 根据商家信息查询未同步的成交记录
	 * 
	 * @param itemId
	 * @param nick
	 * @return
	 */
	List<ActivityRecordBean> queryUnsyncActRecordBySeller(SiteSeller seller) throws SQLException;

	/**
	 * 更新成交记录状态
	 * 
	 * @param deal
	 * @throws SQLException
	 */
	void updateSyncStatus(ActivityRecordBean deal) throws SQLException;

	/**
	 * 根据日期查询成交数量
	 * @param seller
	 * @param month
	 * @return
	 */
	List<AnalysisDealByDay> queryDealCountByDay(SiteSeller seller, int month) throws SQLException;

	/**
	 * 
	 * @param nick
	 * @param activityId
	 * @param month
	 * @return
	 */
	List<AnalysisDealByItem> queryDealCountByActivity(long activityId, int month) throws SQLException;

	/**
	 * 
	 * @param nick
	 * @param activityId
	 * @param month
	 * @return
	 */
	List<AnalysisDealByItem> queryDealCountByItem(long itemId, int month) throws SQLException;

}
